home *** CD-ROM | disk | FTP | other *** search
/ Sprite 1984 - 1993 / Sprite 1984 - 1993.iso / src / cmds / gdb-4.5 / dist / gdb / tm-i386v4.h < prev    next >
Encoding:
C/C++ Source or Header  |  1992-03-04  |  2.4 KB  |  67 lines

  1. /* Macro definitions for GDB on an Intel i386 running SVR4.
  2.    Copyright (C) 1991, Free Software Foundation, Inc.
  3.    Written by Fred Fish at Cygnus Support (fnf@cygint)
  4.  
  5. This file is part of GDB.
  6.  
  7. This program is free software; you can redistribute it and/or modify
  8. it under the terms of the GNU General Public License as published by
  9. the Free Software Foundation; either version 2 of the License, or
  10. (at your option) any later version.
  11.  
  12. This program is distributed in the hope that it will be useful,
  13. but WITHOUT ANY WARRANTY; without even the implied warranty of
  14. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  15. GNU General Public License for more details.
  16.  
  17. You should have received a copy of the GNU General Public License
  18. along with this program; if not, write to the Free Software
  19. Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.  */
  20.  
  21. /* Use the alternate method of determining valid frame chains. */
  22.  
  23. #define FRAME_CHAIN_VALID_ALTERNATE
  24.  
  25. /* number of traps that happen between exec'ing the shell 
  26.  * to run an inferior, and when we finally get to 
  27.  * the inferior code.  This is 2 on most implementations.
  28.  */
  29. #define START_INFERIOR_TRAPS_EXPECTED 2
  30.  
  31. /* Pick up most of what we need from the generic i386 target include file. */
  32.  
  33. #include "tm-i386v.h"
  34.  
  35. /* Pick up more stuff from the generic SVR4 host include file. */
  36.  
  37. #include "tm-sysv4.h"
  38.  
  39. /* We can't tell how many args there are
  40.    now that the C compiler delays popping them.  */
  41.  
  42. #undef FRAME_NUM_ARGS
  43. #define FRAME_NUM_ARGS(val,fi) (val = -1)
  44.  
  45. /* Offsets (in target ints) into jmp_buf.  Not defined in any system header
  46.    file, so we have to step through setjmp/longjmp with a debugger and figure
  47.    them out.  Note that <setjmp> defines _JBLEN as 10, which is the default
  48.    if no specific machine is selected, even though we only use 6 slots. */
  49.  
  50. #define JB_ELEMENT_SIZE sizeof(int)    /* jmp_buf[_JBLEN] is array of ints */
  51.  
  52. #define JB_EBX    0
  53. #define JB_ESI    1
  54. #define JB_EDI    2
  55. #define JB_EBP    3
  56. #define JB_ESP    4
  57. #define JB_EDX    5
  58.  
  59. #define JB_PC    JB_EDX    /* Setjmp()'s return PC saved in EDX */
  60.  
  61. /* Figure out where the longjmp will land.  Slurp the args out of the stack.
  62.    We expect the first arg to be a pointer to the jmp_buf structure from which
  63.    we extract the pc (JB_PC) that we will land at.  The pc is copied into ADDR.
  64.    This routine returns true on success */
  65.  
  66. #define GET_LONGJMP_TARGET(ADDR) get_longjmp_target(ADDR)
  67.